#include "IntegralHistSet.h"


// Enumerated type for to denote feature type
enum featureType {EDGE_RATIO, DOMINANT_EDGE};

// Feature
class Feature
{
	public:
		Feature(int img_w, int img_h);			// Constructor
	
		// Member function
		void GenerateRandomFeature();						// Generates a new feature at random
		float* EvaluateFeature(IntegralHistSet* histset);	// Returns an array of feature values
		float* EvaluateFeature(GhostSet* g_set);
		float GenerateThreshold();							// Generates a threshold
		void PrintData();									// Used for debugging

		// Member variables
		int _img_w;			// Width of image
		int _img_h;			// Height of image
		int _tl_x;			// Top left x co-ordinate (these go from 0 to _img_w-1)
		int _tl_y;			// Top left y co-ordinate (these go from 0 to _img_h-1)
		int _br_x;			// Bottom right x co-ordinate (these go from 0 to _img_w-1)
		int _br_y;			// Bottom right y co-ordinate (these go from 0 to _img_h-1)
		featureType _f;		// Feature type
		int _o1;			// First orientation
		int _o2;			// Second orientation (use is conditional on feature type)
		float _f_max;		// Maximum value from the last computed set
		float _f_min;		// Minimum value from the last computed set
};
